package com.sweet.serializer;

import com.sweet.enums.SerializerTypeEnum;

/**
 * 序列化通用接口
 *
 * @author limi
 * @date 2020-07-28 16:29
 */
public interface ISerializer {
    /**
     * 获取当前序列化所采用的类型
     *
     * @return
     */
    SerializerTypeEnum type();

    /**
     * 将对象序列化为byte数组
     *
     * @param obj 待序列化对象
     * @return
     * @throws Exception
     */
    byte[] serialize(Object obj) throws Exception;

    /**
     * 将byte数组反序列化为对象
     *
     * @param bytes 序列化的字节数组
     * @param cls   反序列化后的对象类类型
     * @param <T>
     * @return
     * @throws Exception
     */
    <T> T deserialize(byte[] bytes, Class<T> cls) throws Exception;
}